home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 November / Freeware November 1998.img / dist / fw_bind.idb / usr / freeware / lib / bind / include / irs.h.z / irs.h
C/C++ Source or Header  |  1998-05-26  |  6KB  |  184 lines

  1. /*
  2.  * Copyright (c) 1996 by Internet Software Consortium.
  3.  *
  4.  * Permission to use, copy, modify, and distribute this software for any
  5.  * purpose with or without fee is hereby granted, provided that the above
  6.  * copyright notice and this permission notice appear in all copies.
  7.  *
  8.  * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
  9.  * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
  10.  * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
  11.  * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  12.  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  13.  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  14.  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  15.  * SOFTWARE.
  16.  */
  17.  
  18. /*
  19.  * $Id: irs.h,v 8.1 1997/12/04 04:55:19 halley Exp $
  20.  */
  21.  
  22. #ifndef _IRS_H_INCLUDED
  23. #define _IRS_H_INCLUDED
  24.  
  25. #include <sys/types.h>
  26.  
  27. #include <netdb.h>
  28. #include <grp.h>
  29. #include <pwd.h>
  30.  
  31. /*
  32.  * This is the group map class.
  33.  */
  34. struct irs_gr {
  35.     void *        private;
  36.     void        (*close) __P((struct irs_gr *));
  37.     struct group *    (*next) __P((struct irs_gr *));
  38.     struct group *    (*byname) __P((struct irs_gr *, const char *));
  39.     struct group *    (*bygid) __P((struct irs_gr *, gid_t));
  40.     int        (*list) __P((struct irs_gr *, const char *,
  41.                      gid_t, gid_t *, int *));
  42.     void        (*rewind) __P((struct irs_gr *));
  43.     void        (*minimize) __P((struct irs_gr *));
  44. };
  45.  
  46. /*
  47.  * This is the password map class.
  48.  */
  49. struct irs_pw {
  50.     void *        private;
  51.     void        (*close) __P((struct irs_pw *));
  52.     struct passwd *    (*next) __P((struct irs_pw *));
  53.     struct passwd *    (*byname) __P((struct irs_pw *, const char *));
  54.     struct passwd *    (*byuid) __P((struct irs_pw *, uid_t));
  55.     void        (*rewind) __P((struct irs_pw *));
  56.     void        (*minimize) __P((struct irs_pw *));
  57. };
  58.  
  59. /*
  60.  * This is the service map class.
  61.  */
  62. struct irs_sv {
  63.     void *        private;
  64.     void        (*close) __P((struct irs_sv *));
  65.     struct servent *(*byname) __P((struct irs_sv *,
  66.                        const char *, const char *));
  67.     struct servent *(*byport) __P((struct irs_sv *, int, const char *));
  68.     struct servent *(*next) __P((struct irs_sv *));
  69.     void        (*rewind) __P((struct irs_sv *));
  70.     void        (*minimize) __P((struct irs_sv *));
  71. };
  72.  
  73. /*
  74.  * This is the protocols map class.
  75.  */
  76. struct irs_pr {
  77.     void *        private;
  78.     void        (*close) __P((struct irs_pr *));
  79.     struct protoent    *(*byname) __P((struct irs_pr *, const char *));
  80.     struct protoent    *(*bynumber) __P((struct irs_pr *, int));
  81.     struct protoent    *(*next) __P((struct irs_pr *));
  82.     void        (*rewind) __P((struct irs_pr *));
  83.     void        (*minimize) __P((struct irs_pr *));
  84. };
  85.  
  86. /*
  87.  * This is the hosts map class.
  88.  */
  89. struct irs_ho {
  90.     void *        private;
  91.     void        (*close) __P((struct irs_ho *));
  92.     struct hostent *(*byname) __P((struct irs_ho *, const char *));
  93.     struct hostent *(*byname2) __P((struct irs_ho *, const char *, int));
  94.     struct hostent *(*byaddr) __P((struct irs_ho *,
  95.                        const void *, int, int));
  96.     struct hostent *(*next) __P((struct irs_ho *));
  97.     void        (*rewind) __P((struct irs_ho *));
  98.     void        (*minimize) __P((struct irs_ho *));
  99. };
  100.  
  101. /*
  102.  * This is the networks map class.
  103.  */
  104. struct irs_nw {
  105.     void *        private;
  106.     void        (*close) __P((struct irs_nw *));
  107.     struct nwent *    (*byname) __P((struct irs_nw *, const char *, int));
  108.     struct nwent *    (*byaddr) __P((struct irs_nw *, void *, int, int));
  109.     struct nwent *    (*next) __P((struct irs_nw *));
  110.     void        (*rewind) __P((struct irs_nw *));
  111.     void        (*minimize) __P((struct irs_nw *));
  112. };
  113.  
  114. /*
  115.  * This is the netgroups map class.
  116.  */
  117. struct irs_ng {
  118.     void *        private;
  119.     void        (*close) __P((struct irs_ng *));
  120.     int        (*next) __P((struct irs_ng *, char **, char **,
  121.                      char **));
  122.     int        (*test) __P((struct irs_ng *, const char *,
  123.                      const char *, const char *,
  124.                      const char *));
  125.     void        (*rewind) __P((struct irs_ng *, const char *));
  126.     void        (*minimize) __P((struct irs_ng *));
  127. };
  128.  
  129. /*
  130.  * This is the generic map class, which copies the front of all others.
  131.  */
  132. struct irs_map {
  133.     void *        private;
  134.     void        (*close) __P((void *));
  135. };
  136.  
  137. /*
  138.  * This is the accessor class.  It contains pointers to all of the
  139.  * initializers for the map classes for a particular accessor.
  140.  */
  141. struct irs_acc {
  142.     void *        private;
  143.     void        (*close) __P((struct irs_acc *));
  144.     struct irs_gr *    (*gr_map) __P((struct irs_acc *));
  145.     struct irs_pw *    (*pw_map) __P((struct irs_acc *));
  146.     struct irs_sv *    (*sv_map) __P((struct irs_acc *));
  147.     struct irs_pr *    (*pr_map) __P((struct irs_acc *));
  148.     struct irs_ho *    (*ho_map) __P((struct irs_acc *));
  149.     struct irs_nw *    (*nw_map) __P((struct irs_acc *));
  150.     struct irs_ng *    (*ng_map) __P((struct irs_acc *));
  151. };
  152.  
  153. /*
  154.  * This is because the official definition of "struct netent" has no
  155.  * concept of CIDR even though it allows variant address families (on
  156.  * output but not input).  The compatibility stubs convert the structs
  157.  * below into "struct netent"'s.
  158.  */
  159. struct nwent {
  160.     char        *n_name;    /* official name of net */
  161.     char        **n_aliases;    /* alias list */
  162.     int        n_addrtype;    /* net address type */
  163.     void        *n_addr;    /* network address */
  164.     int        n_length;    /* address length, in bits */
  165. };
  166.  
  167. /*
  168.  * Hide external function names from POSIX.
  169.  */
  170. #define    irs_gen_acc    __irs_gen_acc
  171. #define    irs_lcl_acc    __irs_lcl_acc
  172. #define    irs_dns_acc    __irs_dns_acc
  173. #define    irs_nis_acc    __irs_nis_acc
  174.  
  175. /*
  176.  * Externs.
  177.  */
  178. extern struct irs_acc *    irs_gen_acc __P((const char *options));
  179. extern struct irs_acc *    irs_lcl_acc __P((const char *options));
  180. extern struct irs_acc *    irs_dns_acc __P((const char *options));
  181. extern struct irs_acc *    irs_nis_acc __P((const char *options));
  182.  
  183. #endif /*_IRS_H_INCLUDED*/
  184.